home *** CD-ROM | disk | FTP | other *** search
/ Star Trek Starfleet Academy Mini Omnipedia / MINI_OMNI.ISO / pc / omni_v2.dxr / 00411_New FT index handlers.ls < prev    next >
Encoding:
Text File  |  1996-04-15  |  2.3 KB  |  96 lines

  1. global gEncyFTBreakList, gEncyFTBreakString, gNopeSND
  2.  
  3. on hPrepBreakList
  4.   set gEncyFTBreakList to value(field "FTencyBreakPoints")
  5.   if not objectp(gEncyFTBreakList) then
  6.     beep()
  7.     put "!! Field FTencyBreakPoints is not a legal list."
  8.     exit
  9.   end if
  10.   sort(gEncyFTBreakList)
  11.   set gEncyFTBreakString to string(gEncyFTBreakList)
  12. end
  13.  
  14. on hGetFTpointer pWord
  15.   if gEncyFTBreakString contains pWord then
  16.     set L to hLocate(pWord)
  17.   else
  18.     set L to findPosNear(gEncyFTBreakList, pWord)
  19.   end if
  20.   if L = 0 then
  21.     hReportStatus("Sorry, can't search for that.")
  22.     hearit(gNopeSND)
  23.     abort()
  24.   end if
  25.   return getAt(gEncyFTBreakList, L)
  26. end
  27.  
  28. on hFTLimitsTest
  29.   set Llimits to value(field "FTENCY word limits test only")
  30.   if not objectp(Llimits) then
  31.     beep()
  32.     put "!! Field <FTENCY word limits test only> is not a legal list."
  33.     exit
  34.   end if
  35.   sort(Llimits)
  36.   set lk to count(Llimits)
  37.   hPrepBreakList()
  38.   set t to the ticks
  39.   put "Starting. Hit <shift> to stop."
  40.   set i to 1
  41.   repeat while not (the shiftDown)
  42.     set Lw to getAt(Llimits, i)
  43.     set Ln to hGetFTpointer(Lw)
  44.     if Ln > 0 then
  45.       put Lw && ">>" && getAt(gEncyFTBreakList, Ln) && "::" & Ln
  46.     else
  47.       put Lw && "returns" && Ln
  48.     end if
  49.     if i = lk then
  50.       exit repeat
  51.     end if
  52.     set i to i + 1
  53.   end repeat
  54.   set t to the ticks - t
  55.   put "That took" && t && "ticks."
  56.   put "Finished."
  57. end
  58.  
  59. on hLocate pWhat
  60.   set vListStart to 1
  61.   set vListEnd to count(gEncyFTBreakList)
  62.   set vFound to 0
  63.   repeat while vFound = 0
  64.     if vListEnd <= (vListStart + 1) then
  65.       set vFound to 1
  66.     end if
  67.     set vCheckPoint to vListStart + ((vListEnd - vListStart) / 2)
  68.     set Ltest to pWhat > getAt(gEncyFTBreakList, vCheckPoint)
  69.     if Ltest then
  70.       set vListStart to vCheckPoint
  71.       next repeat
  72.     end if
  73.     set vListEnd to vCheckPoint
  74.   end repeat
  75.   return vListEnd
  76. end
  77.  
  78. on hLocateExact pWhatWord
  79.   set vListStart to 1
  80.   set vListEnd to count(gEncyFTBreakList)
  81.   set vFound to 0
  82.   repeat while vFound = 0
  83.     if vListEnd <= (vListStart + 1) then
  84.       set vFound to 1
  85.     end if
  86.     set vCheckPoint to vListStart + ((vListEnd - vListStart) / 2)
  87.     set Ltest to pWhatWord > getAt(gEncyFTBreakList, vCheckPoint)
  88.     if Ltest then
  89.       set vListStart to vCheckPoint
  90.       next repeat
  91.     end if
  92.     set vListEnd to vCheckPoint
  93.   end repeat
  94.   return vListEnd
  95. end
  96.